package com.ruoyi.user.utils;

import com.ruoyi.common.config.TXIMConfig;
import com.ruoyi.common.constant.TXIMConstants;
import com.ruoyi.common.core.domain.vo.TximConfigVO;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.service.ISysConfigService;
import com.tencentyun.TLSSigAPIv2;

/**
 * IM 用户工具类
 */
public class IMUserUtils {

    private  static final ISysConfigService sysConfigService = SpringUtils.getBean(ISysConfigService.class);

    /**
     * 初始化IM配置
     * @return
     */
    public static TximConfigVO genTXimConfigInit() {
        TximConfigVO tximConfigVo = new TximConfigVO();
        System.out.println("初始化IM配置");
        String tximAppId = sysConfigService.selectConfigByKey(TXIMConstants.TXIM_APP_ID);
        if(StringUtils.isNotBlank(tximAppId)){
            tximConfigVo.setSdkAppid(Long.parseLong(tximAppId));
        }else{
            tximConfigVo.setSdkAppid(TXIMConfig.getSdkAppid());
        }
        String tximSecretKey = sysConfigService.selectConfigByKey(TXIMConstants.TXIM_SECRET_KEY);
        if(StringUtils.isNotBlank(tximSecretKey)){
            tximConfigVo.setSecretKey(tximSecretKey);
        }else{
            tximConfigVo.setSecretKey(TXIMConfig.getSecretKey());
        }
        String userSigExpire = sysConfigService.selectConfigByKey(TXIMConstants.USER_SIG_EXPIRE);
        if(StringUtils.isNotBlank(userSigExpire)){
            tximConfigVo.setExpire(Long.parseLong(userSigExpire));
        }else{
            tximConfigVo.setExpire(TXIMConfig.getExpire());
        }
        String adminAccount = sysConfigService.selectConfigByKey(TXIMConstants.TXIM_ADMIN_USER);
        if(StringUtils.isNotBlank(adminAccount)){
            tximConfigVo.setAdminAccount(adminAccount);
        }else{
            tximConfigVo.setAdminAccount(TXIMConfig.getAdminAccount());
        }
        return tximConfigVo;
    }


    /**
     * 获取签名
     * @param userId
     * @return
     */
    public static String genUserSig(String userId) {
        TximConfigVO tximConfigVO = genTXimConfigInit();
        TLSSigAPIv2 api = new TLSSigAPIv2(tximConfigVO.getSdkAppid(), tximConfigVO.getSecretKey());
        return api.genUserSig(userId, tximConfigVO.getExpire());
    }

}
